package study.datastructure.heap.leetcode;/**
 * @program: datastructure
 * @author: lcy
 * @create: 2024-11-05 19:28
 */

/**
 2024/11/5,
 */

import study.datastructure.heap.MinHeap;

/**
 * 703：设计一个找到数据流中第 k 大元素的类（class）。注意是排序后的第 k 大元素，不是第 k 个不同的元素。
 *
 * 请实现 KthLargest 类：
 *
 * KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。
 * int add(int val) 将 val 插入数据流 nums 后，返回当前数据流中第 k 大的元素。
 */
public class Client703 {

    private MinHeap heap;

    public Client703(int k, int[] nums) {
        heap=new MinHeap(k);

        for (int num : nums) {
            add(num);
        }

    }


    //模拟不断被调用 一直有数据流出来
    public int add(int val) {
        if (!heap.isFull()){
            heap.offer(val);
        }else {
            if (val>heap.peek()){
                heap.replace(val);
            }
        }
        return heap.peek();

    }

}
